package Principal;

import java.io.FileReader;
import javax.swing.*;

import javax.swing.JOptionPane;

import GestorDeErrores.Errores;
import GestorDeErrores.GestorErrores;
//import lexico2.Alexico;
//import lexico2.ExcepcionLexico;
//import Sintactico.*;
import Scanner.Lexico;
import TablaDeSimbolos.TablaDeSimbolos;
import Scanner.Token;



public class Main2 extends javax.swing.JFrame{
	



	  // Método principal

	  public static void main(String[] args) {		  
		  
		  Main2 i = new Main2();
		  i.setVisible(true);
	  }
	  
	  public Main2(){
		  super();
		  init();
	  }
	  
	  public void init(){
		  GestorErrores gestor = new GestorErrores();
		  TablaDeSimbolos tablaSimbolos = new TablaDeSimbolos();
		  JPanel panel = new JPanel();
		  
		  JTextArea salida = new JTextArea();
		 
		  panel.add(salida);
		  panel.setVisible(true);
		  salida.setVisible(true);
		  salida.setAutoscrolls(true);
		  JScrollBar s = new JScrollBar();
		  JScrollPane p = new JScrollPane(salida);
		  
		  
		
		  setSize(700,700);
		  
		  getContentPane().add(panel);
		  getContentPane().add(p);
		  JOptionPane j = new JOptionPane(); 
		  String fichero = j.showInputDialog(null, "Introduce la ruta relativa del fichero a compilar", "Pruebas/pr1.mod");
		  if (fichero != null) {

			  try {	    	  
		    	  Lexico lexer = new Lexico(new FileReader(fichero), gestor, tablaSimbolos);
		    	  salida.setText("Analizando fichero: " + System.getProperty("user.dir") + 
 			  			 "/" + fichero);
		    	  // Analiza token a token el fichero
		          for (Token sym = lexer.next_token(); sym.tipo != 0; sym = lexer.next_token()) {
		        	  
		             // System.out.println("Token -> " + sym.toString());
		        	  salida.setText(salida.getText()+"\n"+"Token -> " + sym.toString());
		              
		          }       
		      }
		      catch (Exception e) {
		    	  if (fichero.length() > 0)
		    		  salida.setText(salida.getText()+"Error en proceso E/S con el fichero " + 
		    		  			 System.getProperty("user.dir") + "/" + fichero);
		       	  else salida.setText(salida.getText()+("Error en proceso E/S con el fichero: no hay parametro"));
		      }
		      // Muestra la lista de errores
		      gestor.muestraListaErrores(salida);
			  
		  }
	  
				
		}
		  
		  
		 
	  
	  
}